home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-02 / bowlave2.zip / BOWLAVE.PAS < prev    next >
Pascal/Delphi Source File  |  1991-08-18  |  10KB  |  239 lines

  1. PROGRAM BOWLFRI;
  2.  
  3.         { KEEPS RECORD ON HOW BRUCE BOWLS ON FRIDAY LEAGUE }
  4.         { STARTED 9/8/90 }
  5.         { REVISED FOR 2 PEOPLE ON 8/17/91 }
  6.  
  7.  
  8. CONST
  9.  MAXIMUM=60;
  10.  MAXPEOPLE=5;
  11.  MAXGAMES=3;
  12.  
  13. VAR
  14.  
  15.  
  16. NAME : ARRAY[1..MAXPEOPLE] OF STRING[19];
  17. GAME : ARRAY[1..MAXPEOPLE,1..MAXIMUM,1..MAXGAMES] OF INTEGER;
  18. AVERAGE,SERIES : ARRAY[1..MAXPEOPLE,1..MAXIMUM] OF INTEGER;
  19. CONT,PEOPLE,X,Y,DELAY,TT,CODE,GG,S,J : INTEGER;
  20. TOTALPINS,ENTRIES,HIGHGAME,HIGHSERIES,HIGHAVERAGE : ARRAY[1..MAXPEOPLE] OF INTEGER;
  21.   AVG : REAL;
  22.     FILENAME : TEXT;
  23.   UPDATE,TEST : STRING[19];
  24.   PAUSE,ASK : CHAR;
  25.  
  26. PROCEDURE HIGHS;
  27.  BEGIN
  28.   FOR X:=1 TO PEOPLE DO BEGIN TT:=50;
  29.    FOR J:=1 TO ENTRIES[X] DO BEGIN
  30.     FOR S:=1 TO MAXGAMES DO BEGIN
  31.      IF GAME[X,J,S]>TT THEN BEGIN HIGHGAME[X]:=GAME[X,J,S]; TT:=HIGHGAME[X]; END;
  32.      END;
  33.    END;
  34.   END;
  35.   FOR X:=1 TO PEOPLE DO BEGIN TT:=50;
  36.   FOR J:=1 TO ENTRIES[X] DO BEGIN
  37.    IF SERIES[X,J]>TT THEN BEGIN HIGHSERIES[X]:=SERIES[X,J]; TT:=HIGHSERIES[X]; END;
  38.    END;
  39.   END;
  40.   FOR X:=1 TO PEOPLE DO BEGIN TT:=50;
  41.    FOR J:=1 TO ENTRIES[X] DO BEGIN
  42.    IF AVERAGE[X,J]>TT THEN BEGIN HIGHAVERAGE[X]:=AVERAGE[X,J]; TT:=HIGHAVERAGE[X]; END;
  43.    END;
  44.   END;
  45.  END;
  46.  
  47. PROCEDURE CLEAR_VARIABLES;
  48.  BEGIN
  49.   FOR J:=1 TO MAXPEOPLE DO BEGIN
  50.    HIGHGAME[J]:=0; HIGHSERIES[J]:=0; HIGHAVERAGE[J]:=0; ENTRIES[J]:=0; NAME[J]:=(' ');
  51.    TOTALPINS[J]:=0;
  52.    FOR X:=1 TO MAXIMUM DO BEGIN
  53.     AVERAGE[J,X]:=0; SERIES[J,X]:=0;
  54.     FOR S:=1 TO MAXGAMES DO BEGIN
  55.      GAME[J,X,S]:=0;
  56.     END; END; END;
  57.   X:=0; Y:=0; DELAY:=0; TT:=0; CODE:=0; CONT:=0; UPDATE:=(' ');
  58.   GG:=0; S:=0; J:=0; AVG:=0; TEST:=(' '); PEOPLE:=0;
  59.  END;
  60.  
  61. PROCEDURE DISPLAY;
  62.  BEGIN
  63.  CONT:=0;
  64.  REPEAT
  65.   CONT:=CONT+1; HIRES; HIRESCOLOR(BLUE); J:=0; DRAW(10,5,10,81,1);
  66.   REPEAT
  67.   J:=J+32; DRAW(10+J,5,10+J,81,1);
  68.   UNTIL J>600;
  69.   DRAW(10,50,617,50,1); DRAW(10,35,617,35,1); DRAW(10,20,617,20,1); DRAW(10,5,617,5,1);
  70.   DRAW(10,81,617,81,1); DRAW(10,68,617,68,1); DRAW(10,66,617,66,1); DRAW(10,52,617,52,1);
  71.   DRAW(10,109,10,185,1); J:=0;
  72.   REPEAT
  73.   J:=J+32; DRAW(10+J,109,10+J,185,1);
  74.   UNTIL J>600;
  75.   DRAW(10,139,617,139,1); DRAW(10,124,617,124,1); DRAW(10,109,617,109,1);
  76.   DRAW(10,170,617,170,1); DRAW(10,156,617,156,1); DRAW(10,154,617,154,1);
  77.   DRAW(10,185,617,185,1); DRAW(10,172,617,172,1); X:=3; Y:=0; GG:=0; TOTALPINS[CONT]:=0;
  78.   FOR J:=1 TO ENTRIES[CONT] DO
  79.    BEGIN
  80.     IF J<20 THEN BEGIN
  81.       IF J>1 THEN BEGIN X:=X+4; Y:=0; END;
  82.       IF J=1 THEN BEGIN X:=3; Y:=0; END;
  83.       FOR S:=1 TO 3 DO
  84.        BEGIN
  85.         GG:=GG+1; Y:=Y+2; GOTOXY(X,Y); WRITE(GAME[CONT,J,S]);
  86.        END;
  87.       SERIES[CONT,J]:=GAME[CONT,J,1]+GAME[CONT,J,2]+GAME[CONT,J,3]; TOTALPINS[CONT]:=TOTALPINS[CONT]+SERIES[CONT,J];
  88.       GOTOXY(X,Y+2); WRITE(SERIES[CONT,J]);
  89.       AVG:=TOTALPINS[CONT]/GG; STR(AVG,TEST); TEST:=COPY(TEST,3,4); DELETE(TEST,2,1);
  90.       VAL(TEST,AVERAGE[CONT,J],CODE); GOTOXY(X,Y+4); WRITE(AVERAGE[CONT,J]);
  91.      END;
  92.     IF J>19 THEN BEGIN
  93.       IF J>20 THEN BEGIN X:=X+4; Y:=13; END;
  94.       IF J=20 THEN BEGIN X:=3; Y:=13; END;
  95.       FOR S:=1 TO 3 DO
  96.        BEGIN
  97.         GG:=GG+1; Y:=Y+2; GOTOXY(X,Y); WRITE(GAME[CONT,J,S]);
  98.        END;
  99.       SERIES[CONT,J]:=GAME[CONT,J,1]+GAME[CONT,J,2]+GAME[CONT,J,3]; TOTALPINS[CONT]:=TOTALPINS[CONT]+SERIES[CONT,J];
  100.       GOTOXY(X,Y+2); WRITE(SERIES[CONT,J]);
  101.       AVG:=TOTALPINS[CONT]/GG; STR(AVG,TEST); TEST:=COPY(TEST,3,4); DELETE(TEST,2,1);
  102.       VAL(TEST,AVERAGE[CONT,J],CODE); GOTOXY(X,Y+4); WRITE(AVERAGE[CONT,J]);
  103.      END;
  104.    END;
  105. HIGHS;
  106. GOTOXY(3,12); WRITE('HIGH GAME: ',HIGHGAME[CONT]); GOTOXY(29,12); WRITE('HIGH AVERAGE: ',HIGHAVERAGE[CONT]);
  107. GOTOXY(58,12); WRITE('HIGH SERIES: ',HIGHSERIES[CONT]);
  108. GOTOXY(18,25); WRITE('DISPLAYING INFORMATION FOR  <<',NAME[CONT],'>>');
  109.  READLN(PAUSE);
  110.  UNTIL CONT=PEOPLE;
  111.  END;
  112.  
  113. PROCEDURE GET_INFO;
  114.  BEGIN
  115.   ASSIGN(FILENAME,'BOWLAVE.DIR'); RESET(FILENAME); READLN(FILENAME,PEOPLE);
  116.   FOR X:=1 TO PEOPLE DO BEGIN READLN(FILENAME,ENTRIES[X]);
  117.   READLN(FILENAME,NAME[X]);
  118.   FOR J:=1 TO ENTRIES[X] DO BEGIN
  119.    FOR S:=1 TO 3 DO BEGIN READLN(FILENAME,GAME[X,J,S]); END;
  120.   END; END;
  121.   CLOSE(FILENAME);
  122.  END;
  123.  
  124. PROCEDURE ADD;
  125. BEGIN
  126.  CLRSCR; FOR J:=1 TO PEOPLE DO BEGIN WRITELN; WRITELN(NAME[J]); END; WRITELN;
  127.  WRITE('ENTER THE PERSONS NAME TO UPDATE OR ENTER "ALL" TO UPDATE EVERYONES: ');
  128.  READLN(UPDATE);
  129.  CONT:=0;
  130.  REPEAT
  131.  CONT:=CONT+1; CLRSCR;
  132.  IF (UPDATE='ALL') OR (UPDATE=NAME[CONT]) THEN BEGIN
  133.   FOR J:=1 TO 15 DO BEGIN WRITE(' '); END;
  134.   WRITE(CHR(201)); FOR J:=1 TO (28+LENGTH(NAME[CONT])) DO BEGIN WRITE(CHR(205)); END; WRITELN(CHR(187));
  135.   FOR J:=1 TO 15 DO BEGIN WRITE(' '); END;
  136.   WRITE(CHR(186)); WRITE(' ADDING GAMES BOWLED. . .  ',NAME[CONT],' '); WRITELN(CHR(186));
  137.   FOR J:=1 TO 15 DO BEGIN WRITE(' '); END;
  138.   WRITE(CHR(200)); FOR J:=1 TO (28+LENGTH(NAME[CONT])) DO BEGIN WRITE(CHR(205)); END; WRITELN(CHR(188));
  139.   WRITELN; WRITELN;
  140.   TEXTCOLOR(RED); FOR J:=1 TO 15 DO BEGIN WRITE(' '); END;
  141.   WRITE(CHR(201)); FOR J:=1 TO 28 DO BEGIN WRITE(CHR(205)); END; WRITELN(CHR(187));
  142.   FOR J:=1 TO 15 DO BEGIN WRITE(' '); END;
  143.   WRITE(CHR(186)); WRITE('  ENTER FIRST GAME:         '); WRITELN(CHR(186));
  144.   FOR J:=1 TO 15 DO BEGIN WRITE(' '); END;
  145.   WRITE(CHR(186)); WRITE(' ENTER SECOND GAME:         '); WRITELN(CHR(186));
  146.   FOR J:=1 TO 15 DO BEGIN WRITE(' '); END;
  147.   WRITE(CHR(186)); WRITE('  ENTER THIRD GAME:         '); WRITELN(CHR(186));
  148.   FOR J:=1 TO 15 DO BEGIN WRITE(' '); END;
  149.   WRITE(CHR(200)); FOR J:=1 TO 28 DO BEGIN WRITE(CHR(205)); END; WRITELN(CHR(188));
  150.   ENTRIES[CONT]:=ENTRIES[CONT]+1;
  151.   GOTOXY(37,7); BUFLEN:=3; READLN(GAME[CONT,ENTRIES[CONT],1]);
  152.   GOTOXY(37,8); BUFLEN:=3; READLN(GAME[CONT,ENTRIES[CONT],2]);
  153.   GOTOXY(37,9); BUFLEN:=3; READLN(GAME[CONT,ENTRIES[CONT],3]);
  154.   SERIES[CONT,ENTRIES[CONT]]:=GAME[CONT,ENTRIES[CONT],1]+GAME[CONT,ENTRIES[CONT],2]+GAME[CONT,ENTRIES[CONT],3];
  155.   TOTALPINS[CONT]:=TOTALPINS[CONT]+SERIES[CONT,J];
  156.  END;
  157.  UNTIL CONT=PEOPLE;
  158. END;
  159.  
  160. PROCEDURE SAVE;
  161.  BEGIN
  162.   ASSIGN(FILENAME,'BOWLAVE.DIR'); REWRITE(FILENAME); WRITELN(FILENAME,PEOPLE);
  163.   FOR X:=1 TO PEOPLE DO BEGIN WRITELN(FILENAME,ENTRIES[X]);
  164.   WRITELN(FILENAME,NAME[X]);
  165.   FOR J:=1 TO ENTRIES[X] DO BEGIN
  166.    FOR S:=1 TO 3 DO BEGIN WRITELN(FILENAME,GAME[X,J,S]); END;
  167.   END; END;
  168.   CLOSE(FILENAME);
  169.  END;
  170.  
  171. PROCEDURE ERASE2;
  172.  BEGIN
  173.   CLRSCR; WRITE(' DO YOU REALLY WANT TO ERASE ALL THE INFO SAVED TO THE FILE (Y/N):'); READ(KBD,PAUSE);
  174.   IF (PAUSE='Y') OR (PAUSE='y') THEN BEGIN
  175.    ASSIGN(FILENAME,'BOWLAVE.DIR'); REWRITE(FILENAME); WRITELN(FILENAME,'0');
  176.    CLOSE(FILENAME);
  177.    CLEAR_VARIABLES;
  178.    WRITELN; WRITE('ENTER THE NUMBER OF PERSONS TO SET-UP FOR (1-',MAXPEOPLE,'): '); READ(KBD,PAUSE);
  179.    VAL(PAUSE,PEOPLE,CODE);
  180.    FOR X:=1 TO PEOPLE DO BEGIN
  181.    WRITELN; WRITE('ENTER THE NAME OF PERSON NUMBER ',X,': '); READLN(NAME[X]);
  182.    END;
  183.     CLRSCR; WRITELN(' YOUR PROGRAM HAS NOW BEEN SET-UP FOR ',PEOPLE,' PERSON(S) WITH THE FOLLOWING NAMES');
  184.     FOR X:=1 TO PEOPLE DO BEGIN WRITELN; WRITELN(NAME[X]); END;
  185.     WRITELN; WRITE(' HIT <RETURN> TO GO BACK TO THE MAIN MENU '); READ(KBD,PAUSE);
  186.   END;
  187.  END;
  188.  
  189. PROCEDURE ENDING;
  190.  BEGIN
  191.   CLRSCR; WRITE(' IF YOU FORGOT TO UPDATE YOUR INFO YOU CAN DO IT NOW, SAVE (Y/N): ');
  192.   READ(KBD,PAUSE);
  193.   IF (PAUSE='Y') OR (PAUSE='y') THEN BEGIN
  194.    SAVE; WRITELN; WRITELN(' YOUR INFO HAS BEEN UPDATED, GOOD BOWLING.'); WRITELN; WRITELN;
  195.   END;
  196.  END;
  197.  
  198. BEGIN
  199.  CLRSCR; CLEAR_VARIABLES; GET_INFO;
  200.  REPEAT
  201.   CLRSCR; TEXTMODE; FOR J:=1 TO 18 DO BEGIN WRITE(' '); END;
  202.   WRITE(CHR(201)); FOR J:=1 TO 25 DO BEGIN WRITE(CHR(205)); END; WRITELN(CHR(187));
  203.   FOR J:=1 TO 18 DO BEGIN WRITE(' '); END;
  204.   WRITE(CHR(186)); WRITE('   BOWLING INFORMATION   '); WRITELN(CHR(186));
  205.   FOR J:=1 TO 18 DO BEGIN WRITE(' '); END;
  206.   WRITE(CHR(200)); FOR J:=1 TO 25 DO BEGIN WRITE(CHR(205)); END; WRITELN(CHR(188));
  207.   GOTOXY(1,23); WRITE('THIS PROGRAM HAS BEEN SET-UP FOR ');
  208.   FOR J:=1 TO PEOPLE DO BEGIN
  209.   IF J=PEOPLE THEN BEGIN WRITE(' ',NAME[J]); END;
  210.   IF J<PEOPLE THEN BEGIN WRITE(' ',NAME[J],','); END; END;
  211.   GOTOXY(1,6); TEXTCOLOR(RED);
  212.   FOR J:=1 TO 15 DO BEGIN WRITE(' '); END;
  213.   WRITE(CHR(213)); FOR J:=1 TO 32 DO BEGIN WRITE(CHR(205)); END; WRITELN(CHR(184));
  214.   FOR J:=1 TO 15 DO BEGIN WRITE(' '); END;
  215.   WRITE(CHR(179)); WRITE(' 1. ADD NEW GAMES               '); WRITELN(CHR(179));
  216.   FOR J:=1 TO 15 DO BEGIN WRITE(' '); END;
  217.   WRITE(CHR(179)); WRITE(' 2. DISPLAY SCORES & AVERAGES   '); WRITELN(CHR(179));
  218.   FOR J:=1 TO 15 DO BEGIN WRITE(' '); END;
  219.   WRITE(CHR(179)); WRITE(' 3. SAVE                        '); WRITELN(CHR(179));
  220.   FOR J:=1 TO 15 DO BEGIN WRITE(' '); END;
  221.   WRITE(CHR(179)); WRITE(' 8. ERASE ALL INFO FROM FILE    '); WRITELN(CHR(179));
  222.   FOR J:=1 TO 15 DO BEGIN WRITE(' '); END;
  223.   WRITE(CHR(179)); WRITE(' 9. QUIT                        '); WRITELN(CHR(179));
  224.   FOR J:=1 TO 15 DO BEGIN WRITE(' '); END;
  225.   WRITE(CHR(212)); FOR J:=1 TO 32 DO BEGIN WRITE(CHR(205)); END; WRITELN(CHR(190)); WRITELN;
  226.   FOR J:=1 TO 21 DO BEGIN WRITE(' '); END;
  227.   WRITE(CHR(201)); FOR J:=1 TO 18 DO BEGIN WRITE(CHR(205)); END; WRITELN(CHR(187));
  228.   FOR J:=1 TO 21 DO BEGIN WRITE(' '); END;
  229.   WRITE(CHR(186)); WRITE(' ENTER NUMBER:    '); WRITELN(CHR(186));
  230.   FOR J:=1 TO 21 DO BEGIN WRITE(' '); END;
  231.   WRITE(CHR(200)); FOR J:=1 TO 18 DO BEGIN WRITE(CHR(205)); END; WRITELN(CHR(188));
  232.   TEXTCOLOR(WHITE); GOTOXY(38,15); READ(KBD,ASK); WRITE(ASK);
  233.    IF ASK='1' THEN BEGIN ADD; END;
  234.    IF ASK='2' THEN BEGIN DISPLAY; END;
  235.    IF ASK='3' THEN BEGIN SAVE; END;
  236.    IF ASK='8' THEN BEGIN ERASE2; END;
  237.  UNTIL ASK='9';
  238. CLRSCR; ENDING;
  239. END.